"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > المبادئ الصلبة باستخدام بعض التشبيهات الممتعة مع مثال للمركبة

المبادئ الصلبة باستخدام بعض التشبيهات الممتعة مع مثال للمركبة

تم النشر بتاريخ 2024-11-06
تصفح:987

SOLID principles using some fun analogies with Vehicle Example

SOLID هو اختصار لمجموعة من خمسة مبادئ (قواعد) جيدة في برمجة الكمبيوتر. يسمح SOLID للمبرمجين بكتابة التعليمات البرمجية التي يسهل فهمها وتغييرها لاحقًا. غالبًا ما يتم استخدام SOLID مع الأنظمة التي تستخدم تصميمًا موجهًا للكائنات.
دعونا نشرح مبادئ SOLID باستخدام مثال السيارة. تخيل أننا نصمم نظامًا لإدارة أنواع مختلفة من المركبات، مثل السيارات والسيارات الكهربائية، لخدمة النقل.

S - مبدأ المسؤولية الفردية (SRP)

مثال مركبة: تخيل أن لديك سيارة. إنها مسؤولة عن القيادة، ولكن لا ينبغي أن تكون مسؤولة عن التعامل مع أعمال الصيانة الخاصة بها (مثل تغيير الزيت أو تدوير الإطارات). بدلا من ذلك، ميكانيكي منفصل هو المسؤول عن ذلك.
شرح: في الكود الخاص بنا، يجب أن تتعامل فئة المركبة فقط مع الأشياء المتعلقة بالمركبة نفسها، مثل تخزين طرازها وطرازها. إذا كنا بحاجة إلى إدارة الصيانة، فإننا نقوم بإنشاء فئة صيانة منفصلة لذلك. بهذه الطريقة، يكون لكل فصل وظيفة أو مسؤولية واحدة، مما يجعل إدارة الكود أسهل.

class Vehicle
  def initialize(make, model)
    @make = make
    @model = model
  end
end

class Maintenance
  def initialize(vehicle)
    @vehicle = vehicle
  end

  def perform_maintenance
    puts "Performing maintenance on #{@vehicle.make} #{@vehicle.model}"
  end
end

O - مبدأ الفتح/المغلق (OCP)

مثال مركبة: لنفترض أن لديك سيارة أساسية، والآن تريد إضافة سيارة كهربائية إلى نظامك. لا ينبغي عليك تعديل فئة السيارة الحالية لإضافة ميزات للسيارات الكهربائية. وبدلاً من ذلك، يمكنك توسيع الوظائف الحالية عن طريق إنشاء فئة جديدة للسيارات الكهربائية.
شرح: فئة المركبة مفتوحة للتوسيع (يمكنك إنشاء أنواع جديدة من المركبات مثل المركبات الكهربائية)، ولكنها مغلقة للتعديل (لا تحتاج إلى تغيير فئة المركبة نفسها لإضافة أنواع جديدة).

class Vehicle
  def initialize(make, model)
    @make = make
    @model = model
  end

  def description
    "#{@make} #{@model}"
  end
end

class ElectricVehicle 





L - مبدأ استبدال ليسكوف (LSP)

مثال مركبة: تخيل أن لديك أسطولًا من المركبات، ويمكنك استبدال أي سيارة عادية بسيارة كهربائية دون أي مشاكل. يجب أن يكون كلاهما قادرين على أداء وظيفتهما الأساسية  - القيادة - دون كسر النظام.
شرح: يجب أن تكون أي فئة فرعية (مثل ElectricVehicle) قادرة على استبدال فئتها الأصلية (المركبة) دون تغيير سلوك البرنامج. وهذا يضمن أن الكود الخاص بنا يمكنه التعامل مع أنواع مختلفة من المركبات بنفس الطريقة.

class Vehicle
  def initialize(make, model)
    @make = make
    @model = model
  end

  def drive
    puts "Driving the #{@make} #{@model}"
  end
end

class ElectricVehicle 





I - مبدأ فصل الواجهة (ISP)

مثال مركبة: تخيل أن لديك أنواعًا مختلفة من المركبات: بعضها يمكن شحنه (مثل السيارات الكهربائية)، والبعض الآخر يمكن قيادته فقط (مثل سيارات الغاز). لا تريد أن تتعامل سيارة تعمل بالغاز مع الطرق المتعلقة بالشحن.
شرح: يجب أن تقوم الفصول الدراسية فقط بتنفيذ الواجهات (أو السلوكيات) التي تحتاجها. على سبيل المثال، قد تقوم السيارة الكهربائية بتنفيذ كل من الواجهات القابلة للقيادة والقابلة للشحن، في حين أن السيارة العادية تنفذ فقط الواجهات القابلة للقيادة.

module Drivable
  def drive
    raise NotImplementedError, "This #{self.class} cannot drive"
  end
end

module Chargeable
  def charge
    raise NotImplementedError, "This #{self.class} cannot be charged"
  end
end

class Vehicle
  include Drivable

  def initialize(make, model)
    @make = make
    @model = model
  end

  def drive
    puts "Driving the #{@make} #{@model}"
  end
end

class ElectricVehicle 





D - مبدأ انعكاس التبعية (DIP)

مثال مركبة: تخيل أن السيارة يمكن أن تحتوي على أنواع مختلفة من المحركات: محرك غاز أو محرك كهربائي. فبدلاً من الاعتماد بشكل مباشر على نوع محرك معين، يجب أن تعتمد السيارة على واجهة محرك أكثر عمومية حتى تتمكن من استخدام أي نوع من المحركات.
شرح: الوحدات عالية المستوى (مثل السيارة) لا ينبغي أن تعتمد على الوحدات ذات المستوى المنخفض (مثل GasEngine أو ElectricEngine). يجب أن يعتمد كلاهما على التجريدات (مثل واجهة المحرك). وهذا يجعل النظام أكثر مرونة وأسهل للتغيير.

class Engine
  def start
    raise NotImplementedError, "This #{self.class} cannot start"
  end
end

class GasEngine 



من خلال اتباع مبادئ SOLID في مثال السيارة هذا، يمكننا بناء نظام يسهل صيانته وتوسيعه والتكيف مع المتطلبات الجديدة.

لينكد إن: https://www.linkedin.com/in/anandsoni11/

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/sonianand11/solid-principles-using-some-fun-analogies-with-vehicle-example-34p7?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3